/**
 * 
 */
package cn.java.innerclass;

/**
* 测试匿名内部类
* @author 攀博课堂
* @version v1.0
*/
public class FirstOuterClass3 {
	
	
   //定义一个外部类的成员方法
	public void getFirstInnerClassObj() {
		
		//局部内部类
		class FirstInnerClass{
			public FirstInnerClass() {
				System.out.println("外部类对象的引用"+FirstOuterClass3.this);
			}
			
			//普通方法
			public FirstInnerClass getInstance() {
				
				return this;
			}
			
			
		}
		
		//定义匿名内部类，它是FirstInnerClass的子类
		FirstInnerClass firstInnerClass = new FirstInnerClass() {
			private int a;
			{
				//在构造代码块中对成员变量进行初化
				System.out.println("执行构造代码块");
				a=0;
			}
			//对父类中的getInstance()进行了重写
			@Override
			public FirstInnerClass getInstance() {
				System.out.println("我是匿名内部类");
				System.out.println(this);
				return this;
			}
			 
			
		 };
		 
		 //调用匿名内部类的方法
		 FirstInnerClass instance = firstInnerClass.getInstance();
		 System.out.println(instance);
		
	}
	
	public static void main(String[] args) {
		//外部类对象
		FirstOuterClass3 firstOuterClass3 = new FirstOuterClass3();
		firstOuterClass3.getFirstInnerClassObj();
		
	}
}
